#makefile的语法很严格, 不要随便加空格!!!
#定义变量 -- 取出变量:$() -- 类似于指针解引用
BIN=a.out
COMPILER=gcc
#SRC=$(wildcard *.c) #作用同下
SRC=$(shell ls *.c) #取出当前目录下的所有.c文件
OBJ=$(SRC:.c=.o) #形成和SRC里的所有.c文件同名的.o文件
RM=rm -f


$(BIN):$(OBJ) # $^:依赖文件列表  $@:目标文件列表  @:命令不回显  
	@$(COMPILER) $^ -o $@ 
	@echo "[链接]: " $^ " --> " $@


# $<:依赖文件列表中的文件(.c)一个一个的交给编译器(gcc)
# -g:编译时向二进制文件中加入调试信息(所以编译必须加, 链接可加可不加)  
# -std=c99:满足c99标准(eg:支持for内部定义变量等)

#$(OBJ):$(SRC) #作用同下
#*.o:*.c
%.o:%.c
	@$(COMPILER) $< -o $@ -g -std=c99
	@echo "[编译]: " $< " --> " $@


.PHONY:clean
clean:
	@$(RM) $(OBJ) $(BIN)
	@echo "[清理]: " $(OBJ) $(BIN)

